/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ita.escolaita.view;

import br.ita.escolaita.ejb.AlunoEjbBeanLocal;
import br.ita.escolaita.model.entity.Aluno;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;

public class AlunoBean {

    @EJB
    private AlunoEjbBeanLocal alunoEjb;
    private List<Aluno> alunos;
    private String cpfSelecionado;
    private Aluno aluno;

    // Construtor default
    public AlunoBean() {
        aluno = new Aluno();
    }

    public String salvar() {
        String retorno = null;

        try {
            alunoEjb.salvar(aluno);
            aluno = new Aluno();
            retorno = "sucesso";
        } catch (Exception e) {
            e.printStackTrace();
            retorno = "erro";
        }

        return retorno;
    }

    public String pesquisar() {
        String retorno = null;
        try {
            alunos = alunoEjb.listar(aluno);
            retorno = "sucesso";
        } catch (Exception e) {
            e.printStackTrace();
            retorno = "erro";
        }

        return retorno;
    }

    public List<Aluno> getTodosAlunos() {
        try {
            alunos = alunoEjb.listarTodos();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return alunos;
    }

    public void selecionarListener(ActionEvent event) {
        UIParameter component = (UIParameter) event.getComponent().findComponent("alunoDesativar");
        if (component == null) {
            component = (UIParameter) event.getComponent().findComponent("alunoAtivar");
        }
        if (component == null) {
            component = (UIParameter) event.getComponent().findComponent("alunoAlterar");
        }
        if (component != null) {
            aluno = (Aluno) component.getValue();
        }
    }

    public void desativarListener(ActionEvent event) {
        UIParameter component = (UIParameter) event.getComponent().findComponent("alunoDesativar");
        aluno = (Aluno) component.getValue();
    }

    public void alterarListener(ActionEvent event) {
        UIParameter component = (UIParameter) event.getComponent().findComponent("alunoAlterar");
        aluno = (Aluno) component.getValue();
    }

    public String selecionar() {
        String retorno = "";
        if (cpfSelecionado != null) {
            for (Aluno f : alunos) {
                if (f.getCpf().equals(cpfSelecionado)) {
                    aluno = f;
                    break;
                }
            }
            retorno = "selecionar";
        }
        return retorno;
    }

    public String alterar() {
        return "alterar";
    }

    public String salvarAlteracao() {
        String retorno = null;
        try {
            if (aluno != null) {
                alunoEjb.alterar(aluno);
                retorno = "sucesso";
                aluno = new Aluno();
            }
        } catch (Exception e) {
            e.printStackTrace();
            retorno = "erro";
        }
        return retorno;

    }

    public void desativar() {
        aluno.setStatus('I');
        alunoEjb.alterar(aluno);
        aluno = new Aluno();
    }

    public void ativar() {
        aluno.setStatus('A');
        alunoEjb.alterar(aluno);
        aluno = new Aluno();
    }

    public String voltar() {
        HttpSession ses = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        ses.removeAttribute("alunoBean");
        return "voltar";
    }

    public List<Aluno> todos() {
        try {
            alunos = alunoEjb.listarTodos();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return alunos;
    }

    public List<SelectItem> getListaAlunos() {
        List<Aluno> todosAlunos = alunoEjb.listarTodos();
        List<SelectItem> itens = new ArrayList<SelectItem>();
        for (Aluno a : todosAlunos) {
            SelectItem item = new SelectItem(a, a.getNome());
            itens.add(item);
        }
        return itens;
    }

    public List<Aluno> getAlunos() {
        return alunos;
    }

    public void setAlunos(List<Aluno> alunos) {
        this.alunos = alunos;
    }

    public AlunoEjbBeanLocal getAlunoEjb() {
        return alunoEjb;
    }

    public void setAlunoEjb(AlunoEjbBeanLocal alunoEjb) {
        this.alunoEjb = alunoEjb;
    }

    public Aluno getAluno() {
        if (aluno == null) {
            aluno = new Aluno();
        }
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }
};
